home *** CD-ROM | disk | FTP | other *** search
/ Revolution - Das Atari CD Magazin 1997 / Revolution - Das Atari CD Magazin 1.iso / software / anwendng / qed_397 / sourcen / initerm.c < prev    next >
C/C++ Source or Header  |  1997-01-04  |  6KB  |  309 lines

  1. #include "global.h"
  2. #include "clipbrd.h"
  3. #include "comm.h"
  4. #include "debug.h"
  5. #include "desktop.h"
  6. #include "disk.h"
  7. #include "edit.h"
  8. #include "error.h"
  9. #include "event.h"
  10. #include "file.h"
  11. #include "find.h"
  12. #include "fontsel.h"
  13. #include "icon.h"
  14. #include "kurzel.h"
  15. #include "magx.h"
  16. #include "makro.h"
  17. #include "menu.h"
  18. #include "mintlib.h"
  19. #include "options.h"
  20. #include "printer.h"
  21. #include "projekt.h"
  22. #include "rsc.h"
  23. #include "scroll.h"
  24. #include "set.h"
  25. #include "text.h"
  26. #include "trash.h"
  27. #include "umbruch.h"
  28. #include "version.h"
  29. #include "windows.h"
  30.  
  31.  
  32. /****** VARIABLES ************************************************************/
  33.  
  34. extern BOOLEAN abortProg;            /* event.c */
  35.  
  36. /****** FUNCTIONS ************************************************************/
  37.  
  38. LOCAL BOOLEAN    init_initerm (WORD argc, UBYTE *argv[]);
  39.  
  40. /*****************************************************************************/
  41.  
  42. VOID    handleNix(VOID)            /* was tun bei Signal? */
  43. {
  44.     /* nix, einfach ignorieren! */
  45. }
  46.  
  47. VOID    handleTerm(VOID)
  48. {
  49.     abortProg = TRUE;
  50. }
  51.  
  52. WORD main(WORD argc, UBYTE *argv[], UBYTE *env[])
  53. {
  54.     UBYTE            *p, s[128];
  55.     LONG            v;
  56.     WORD            i, d;
  57.     WORD            old_tty_mode;
  58.  
  59.     gl_apid = appl_init ();
  60.  
  61. #ifdef DEBUG
  62.     DebugInit(DEBUG, DEBUGFILE, gl_apid);
  63.     Debug("qed: started...\n");
  64. #endif /* DEBUG */
  65.  
  66. #if 0
  67. {
  68.     WORD    i;
  69.  
  70.     Debug("qed:    argc=%d\n", argc);
  71.     for (i = 0; i < argc; i++)
  72.         Debug("qed: argv[%d]=%s\n", i, argv[i]);
  73. }
  74. #endif
  75.  
  76.     if (global[0] == 0)
  77.         exit(1);
  78.     if (gl_apid < 0)
  79.         exit(1);
  80.     gem = global[0];
  81.     mint = getcookie('MiNT', &v);
  82.     aes41 = (gem >= 0x410);
  83.     magx = check_magx();
  84.  
  85.     return_code = 0;
  86.  
  87.     if (aes41)
  88.     {
  89.         UBYTE    titel[20];
  90.  
  91.         strcpy(titel, "  qed ");
  92.         strcat(titel, ProgrammVersion);
  93.         (VOID) menu_register (gl_apid, titel);
  94.     }
  95.  
  96.     Pdomain(1);
  97.     Psignal(SIGINT, handleNix);
  98.     Psignal(SIGSYS, handleNix);
  99.     Psignal(SIGTERM, handleTerm);
  100.     Psignal(SIGQUIT, handleTerm);
  101.     Psignal(SIGHUP, handleTerm);
  102.  
  103.     old_tty_mode = 0;                                                /* Consolen-Modus auf RAW schalten */
  104.     raw_mode(&old_tty_mode);
  105.  
  106.     if (appl_xgetinfo(12, &i, &d, &d, &d) && (i&8)==8)    /* gibts AP_TERM */
  107.         shel_write(9, 1, 1, 0L, 0L);                            /* wir können es! */
  108.  
  109.     strcpy(app_path, "");
  110.     strcpy(qed_path, "");
  111.  
  112.     if (argv[0][0] != EOS)
  113.         strcpy(app_path, argv[0]);
  114.     else
  115.         shel_read(app_path, s);
  116.  
  117.     if (strlen(app_path) > 0)
  118.     {
  119.         p = strrchr (app_path, '\\');
  120.         if (p == NULL)                                        /* Kein Pfad */
  121.             app_path[0] = EOS;
  122.         else
  123.         {
  124.             p++;
  125.             str_upper(p);
  126.             if (strncmp(p, "QED", 3))
  127.                 app_path[0] = EOS;
  128.             else
  129.                 *p = EOS;
  130.         }
  131.         if (app_path[0] != EOS)
  132.             if (!make_normalpath(app_path, FALSE))
  133.                 app_path[0] = EOS;
  134.     }
  135.  
  136.     if (init_initerm(argc, argv))
  137.     {
  138.         hndl_events();
  139.  
  140.         menu_bar (NULL, FALSE);            /* Menüzeile freigeben */
  141.         term_comm();
  142.         term_project();
  143.     }
  144.     term_resource ();
  145.     term_global ();                    /* Terminiere global */
  146.     appl_exit ();                        /* Applikation beenden */
  147.  
  148.     raw_mode(&old_tty_mode);        /* Consolen-Modus zurücksetzen */
  149.  
  150. #ifdef DEBUG
  151.     Debug("qed: finished.\n");
  152.     DebugExit();
  153. #endif
  154.     return (return_code);
  155. }
  156.  
  157. /***************************************************************************/
  158. /* Initialisieren des Moduls                                                                */
  159. /***************************************************************************/
  160.  
  161. LOCAL VOID find_qed(VOID)
  162. {
  163.     UBYTE        *p;
  164.     BOOLEAN    found = FALSE;
  165.  
  166.     if (!get_qed(qed_path))                                /* Parameterdatei wurde übergeben */
  167.     {
  168.         p = getenv("HOME");                                /* im Environment nachschauen */
  169.         if (p != NULL)
  170.         {
  171.             strcpy(qed_path, p);
  172.             if (make_normalpath(qed_path, FALSE))
  173.                 strcat(qed_path, "default.qed");
  174.             found = file_exist(qed_path);
  175.         }
  176.  
  177.         p = getenv("QED");
  178.         if (!found && (p != NULL))
  179.         {
  180.             strcpy(qed_path, p);
  181.             if (make_normalpath(qed_path, FALSE))
  182.                 strcat(qed_path, "default.qed");
  183.             found = file_exist(qed_path);
  184.         }
  185.  
  186.         if (!found && app_path[0] != EOS)            /* im Programmpfad */
  187.         {
  188.             strcpy(qed_path, app_path);
  189.             strcat(qed_path, "default.qed");
  190.             found = file_exist(qed_path);
  191.         }
  192.  
  193.         if (!found && file_exist("default.qed"))    /* im aktueller Ordner */
  194.         {
  195.             get_path(qed_path, 0);
  196.             strcat(qed_path, "default.qed");
  197.             found = TRUE;
  198.         }
  199.  
  200.         if (found)
  201.         {
  202.             if (!caseSens(qed_path, NULL))
  203.                 str_upper(qed_path);
  204.         }
  205.         else
  206.             qed_path[0] = EOS;
  207.     }
  208. }
  209.  
  210.  
  211. LOCAL BOOLEAN init_initerm (WORD argc, UBYTE *argv[])
  212. {
  213.     BOOLEAN    ok;
  214.     WORD        i;
  215.     UBYTE        str[256];
  216.     CICONBLK *cicon;
  217.  
  218.     ok    = TRUE;
  219.     init_global();
  220.  
  221.     init_default_var();
  222.  
  223.     if (!init_resource())
  224.         return FALSE;
  225.     if (desk.w < 80 * sys_wchar || desk.h < 23 * sys_hchar)
  226.     {
  227.         note(1, SCREEN);
  228.         return FALSE;
  229.     }
  230.     init_windows();
  231.     init_icon();
  232.     init_memory();
  233.     init_text();
  234.     init_edit();
  235.     init_makro ();
  236.     init_marken();
  237.     init_desktop ();
  238.     init_disk ();
  239.     init_printer ();
  240.     init_projekt ();
  241.  
  242.     if (argc > 1)
  243.     {
  244.         for (i = 1; i < argc; i++)
  245.         {
  246.             /*
  247.              * Wenn ein Argument ein Leerzeichen enthält, klammern wir das in ',
  248.              * damit es bei add_diskinfo korrekt erkannt wird.
  249.              */
  250.             if (strchr(argv[i], ' ') != NULL)
  251.             {
  252.                 strcpy(str, "\'");
  253.                 strcat(str, argv[i]);
  254.                 strcat(str, "\'");
  255.             }
  256.             else
  257.                 strcpy(str, argv[i]);
  258.             add_diskinfo(str, FALSE);
  259.         }
  260.     }
  261.  
  262.     find_qed();                                            /* qed-File in Parametern ? */
  263.     option_load();
  264.  
  265.     if (!icon_anz(disk_type))
  266.     {
  267.         cicon = (CICONBLK *)get_obspec(icons, IDISK);
  268.         idisk = add_icon_to_desk(IDISK, cicon->monoblk.ib_ptext, -1, -1);
  269.         add_icon(disk_type, idisk);
  270.     }
  271.     if (!icon_anz(printer_type))
  272.     {
  273.         cicon = (CICONBLK *)get_obspec(icons, IPRINTER);
  274.         iprinter = add_icon_to_desk(IPRINTER, cicon->monoblk.ib_ptext, -1, -1);
  275.         add_icon(printer_type, iprinter);
  276.     }
  277.  
  278.     init_comm();
  279.     init_clipbrd ();
  280.     init_trash ();
  281.  
  282.     ok &= init2_desktop();
  283.  
  284.     /* wird angeschaltet, sobald Default-Prj geladen! */
  285.     menu_ienable(menu, MTAKEPRJ, FALSE);
  286.  
  287.     if (overwrite)
  288.     {
  289.         menu_icheck(menu, MOEINF, FALSE);
  290.         menu_icheck(menu, MOOVERW, TRUE);
  291.     }
  292.     else
  293.     {
  294.         menu_icheck(menu, MOEINF, TRUE);
  295.         menu_icheck(menu, MOOVERW, FALSE);
  296.     }
  297.  
  298.     if (ok)
  299.     {
  300.         menu_bar (menu, TRUE);
  301.         wind_update (BEG_UPDATE);
  302.         do_icon(0, DO_OPEN);
  303.         open_multidisk();
  304.         wind_update (END_UPDATE);
  305.     }
  306.  
  307.     return (ok);
  308. } /* init_initerm */
  309.